home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Collections: Scope
/
Scope Disk #017 (199x)(Scope PD)(US)[WB].zip
/
Scope Disk #017 (199x)(Scope PD)(US)[WB].adf
/
QMouse1.0
/
Util.asm
< prev
Wrap
Assembly Source File
|
1988-06-29
|
3KB
|
135 lines
section text,CODE
INCLUDE "exec/types.i"
INCLUDE "exec/memory.i"
INCLUDE "exec/io.i"
CALLSYS MACRO
xref _LVO\1
CALLLIB _LVO\1
ENDM
XDEF CreatePort
XDEF DeletePort
XDEF CreateStdIO
XDEF DeleteStdIO
XDEF CreateExtIO
XDEF DeleteExtIO
CreatePort: ; ( Name:a0, Pri:d0 )
movem.l d2-d4/a2,-(sp)
move.l a0,d3
move.b d0,d4
moveq #-1,d0
CALLSYS AllocSignal
cmpi.b #-1,d0
beq CreatePort_Err
move.b d0,d2
moveq #MP_SIZE,d0
move.l #MEMF_PUBLIC!MEMF_CLEAR,d1
CALLSYS AllocMem
tst.l d0
beq CreatePort_Err
move.l d0,a2
move.l d3,LN_NAME(a2)
move.b d4,LN_PRI(a2)
move.b #NT_MSGPORT,LN_TYPE(a2)
move.b #PA_SIGNAL,MP_FLAGS(a2)
move.b d2,MP_SIGBIT(a2)
sub.l a1,a1
CALLSYS FindTask
move.l d0,MP_SIGTASK(a2)
tst.l d3
beq CreatePortNoName
move.l a2,a1
CALLSYS AddPort
move.l a2,d0
bra CreatePort_End
CreatePortNoName:
lea MP_MSGLIST(a2),a1
NEWLIST a1
move.l a2,d0
CreatePort_End:
movem.l (sp)+,d2-d4/a2
rts
CreatePort_Err:
moveq #0,d0
bra CreatePort_End
DeletePort: ; ( Port:d0 )
move.l a2,-(sp)
move.l d0,a2
tst.l LN_NAME(a2)
beq DeletePort_NoName
move.l a2,a1
CALLSYS RemPort
DeletePort_NoName:
move.b MP_SIGBIT(a2),d0
CALLSYS FreeSignal
move.l a2,a1
moveq #MP_SIZE,d0
CALLSYS FreeMem
move.l (sp)+,a2
rts
CreateStdIO: ; ( ReplyPort:a0 )
moveq #IOSTD_SIZE,d0
CreateExtIO: ; ( ReplyPort:a0, Size:d0 )
movem.l d2-d3,-(sp)
move.l a0,d3
beq CreateExtIO_Err
move.l d0,d2
move.l #MEMF_PUBLIC!MEMF_CLEAR,d1
CALLSYS AllocMem
tst.l d0
beq CreateExtIO_End
move.l d0,a1
move.b #NT_MESSAGE,LN_TYPE(a1)
move.w d2,MN_LENGTH(a1)
move.l d3,MN_REPLYPORT(a1)
CreateExtIO_End:
movem.l (sp)+,d2-d3
rts
CreateExtIO_Err:
moveq #0,d0
bra CreateExtIO_End
DeleteStdIO: ; ( IORequest:d0 )
DeleteExtIO: ; ( IORequest:d0 )
move.l d0,a1
moveq #0,d0
move.w MN_LENGTH(a1),d0
CALLSYS FreeMem
rts
end